官方文档:https://rocketmq.apache.org/docs/quick-start/ (opens new window)

Github: https://github.com/apache/rocketmq (opens new window)

Github Docker: https://github.com/apache/rocketmq-docker (opens new window)

DockerHub: https://hub.docker.com/r/apache/rocketmq/tags (opens new window)

# Windows 下的安装

在windows上安装RocketMQ一般只作为新手入门玩一玩。 因为RocketMQ的存储设计,包括分页设计,设计上都是基于Linux上的。所以生产服务器推荐使用Linux.

# 解压及运行前环境

使用运行版本(Binary)。运行前确保:已经有jdk1.8 (默认支持jdk1.8,如果要使用高版本的jdk,需要修改启动脚本才能启动成功。)

# 配置环境变量

ROCKETMQ_HOME="C:\Programs\rocketmq-4.9.2"
NAMESRV_ADDR="localhost:9876"
1
2

# 注意事项

请在 JDK 1.8 上运行。

# 修改虚拟机内存

RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小。

但是这个也仅仅是在测试环境中,RocketMQ在生产上最低要求至少8G内存(官方推荐)才能确保RocketMQ的效果

编辑 runbroker.sh 和 runserver.sh 修改默认JVM大小(windows上对应cmd文件)

vi runbroker.sh --broker的配置

vi runserver.sh --nameServer的配置

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

# 启动脚本有坑,需要修改

当 JDK 安装在有空格的目录下,需要添加引号。这是官方启动脚本里的坑! runserver.cmd

rem change memory
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:"%USERPROFILE%\rmq_srv_gc.log" -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages"
rem 注意这里:If the JAVA_HOME path contains Spaces, add double quotation marks.
set "JAVA_OPT=%JAVA_OPT% -Djava.ext.dirs="%BASE_DIR%lib;%JAVA_HOME%\jre\lib\ext""
set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%""
1
2
3
4
5
6
7
8
9

runbroker.cmd

rem change memory
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:%USERPROFILE%\mq_gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:+AlwaysPreTouch"
set "JAVA_OPT=%JAVA_OPT% -XX:MaxDirectMemorySize=15g"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages -XX:-UseBiasedLocking"
rem 注意这里:If the JAVA_HOME path contains Spaces, add double quotation marks.
set "JAVA_OPT=%JAVA_OPT% -Djava.ext.dirs="%BASE_DIR%lib;%JAVA_HOME%\jre\lib\ext""
rem 注意这里:If the CLASSPATH path contains Spaces, add double quotation marks.
set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%""
1
2
3
4
5
6
7
8
9
10
11
12
13

# 启动

RocketMQ的物理架构中,都是需要先启动NameServer再启动Broker的。所以启动顺序一定不要搞反了。

以 powershell 为例。

# 启动 NAMESERVER

mqnamesrv.cmd

PS C:\Users\mengweijin> mqnamesrv.cmd
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON
1
2
3
4
5
6

# 启动 BROKER

mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true

PS C:\Users\mengweijin> mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
The broker[DESKTOP-MDDFCRT, 192.168.5.1:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876
1
2
3
4

# 安装 rocketmq-dashboard

Github:https://github.com/apache/rocketmq-dashboard (opens new window)

DockerHub: https://hub.docker.com/r/apacherocketmq/rocketmq-dashboard/tags (opens new window)

# Run with docker

docker pull apacherocketmq/rocketmq-dashboard:latest

docker run -d --name rocketmq-dashboard --restart=always -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
docker run -d --name rocketmq-dashboard --restart=always -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.8.115:9876" -p 8089:8080 -t apacherocketmq/rocketmq-dashboard:latest
1
2
3
4